Integrated circuit devices are used in a wide variety of modern appliances, such as computers, automobiles, telephones, televisions, manufacturing tools, satellites and even toys. While even a small integrated circuit device can provide a great deal of functionality, almost every integrated circuit device must be electrically connected to an input or output device, to another integrated circuit device, or to some other electronic component in order to be useful. To provide these electrical connections, integrated circuit devices are typically mounted on a printed circuit board (PCB). Most PCB's have a rigid, planar core. The core may be formed, for example, of a sheet of fiberglass material impregnated with epoxy. Conductive lines or “traces” then are formed on one or both surfaces of the core, to electronically connect the components attached to the PCB.
There are a number of steps performed in the design of a PCB, often referred to as the “design flow.” An illustrative design flow may include an initial step where a designer creates a schematic diagram for the system to be connected through the PCB. This process includes identifying each component that will be included in the system. A system can include “active” components, such as, for example, field programmable gate arrays (FPGA's,) integrated circuits, and application-specific integrated circuits (ASIC's). A system also can include “passive” components, such as, for example, resistors, capacitors, and inductors. In addition to identifying each component, the schematic design will represent the electrical connections that must be formed between each component.
Once the schematic design is finalized, the designer will typically create a physical design to implement the schematic design. This physical design is sometimes referred to as the layout design. The designer will begin by selecting a physical location in the layout design for each component. After a location in the layout design for the various components has been selected, the designer then will route traces in the layout design to connect the components as specified in the schematic design.
As those of ordinary skill in the art will appreciate, due to the large number of components in modern electronic designs, placing components in the layout design can be a tedious and time consuming process. In order to increase placement efficiency, components are often grouped together and represented by geometric shapes. These geometric shapes are often referred to as “component groups.” The component groups, representing the individual component located therein, are placed into locations within the layout design. As such, a single item (e.g. a component group) can be placed which represents multiple items (e.g. individual components.) This process of using component groups to represent a collection of components for placement is commonly referred to as hierarchical group planning (HGP). Although using an HGP methodology to place components within a layout is more efficient than manually placing each component, there are still inefficiencies in the placement process. For example, although some automated placement of component groups is possible, conventional HGP methodologies still require the user to manually place many of the component groups and to adjust the geometric shape of component groups in order to resolve conflicts between group boundaries and allow for the placement of all necessary component groups within the layout.